<!DOCTYPE html>
<html lang="en-us" dir="ltr" itemscope itemtype="http://schema.org/Article" data-r-output-format="html">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0">
    <meta name="generator" content="Hugo 0.147.3">
    <meta name="generator" content="Relearn 8.2.0+220806ce3ced8264fbdd693f77f28216a8a1b6ae">
    <meta name="description" content="MinIO is high-performance object storage that is API compatible to Amazons Simple Storage Service (S3), but is open source and written in Go. It can be used as a building block for applications involving file storage and file transmission and while its native to the cloud, it turns out one can also use it on gokrazy. :)
Step 1: Install MinIO to your gokrazy device Add the minio program to your gokrazy instance:">
    <meta name="author" content="">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="MinIO object storage :: gokrazy">
    <meta name="twitter:description" content="MinIO is high-performance object storage that is API compatible to Amazons Simple Storage Service (S3), but is open source and written in Go. It can be used as a building block for applications involving file storage and file transmission and while its native to the cloud, it turns out one can also use it on gokrazy. :)
Step 1: Install MinIO to your gokrazy device Add the minio program to your gokrazy instance:">
    <meta property="og:url" content="https://gokrazy.org/packages/minio/index.html">
    <meta property="og:site_name" content="gokrazy">
    <meta property="og:title" content="MinIO object storage :: gokrazy">
    <meta property="og:description" content="MinIO is high-performance object storage that is API compatible to Amazons Simple Storage Service (S3), but is open source and written in Go. It can be used as a building block for applications involving file storage and file transmission and while its native to the cloud, it turns out one can also use it on gokrazy. :)
Step 1: Install MinIO to your gokrazy device Add the minio program to your gokrazy instance:">
    <meta property="og:locale" content="en_us">
    <meta property="og:type" content="article">
    <meta property="article:section" content="Available packages">
    <meta itemprop="name" content="MinIO object storage :: gokrazy">
    <meta itemprop="description" content="MinIO is high-performance object storage that is API compatible to Amazons Simple Storage Service (S3), but is open source and written in Go. It can be used as a building block for applications involving file storage and file transmission and while its native to the cloud, it turns out one can also use it on gokrazy. :)
Step 1: Install MinIO to your gokrazy device Add the minio program to your gokrazy instance:">
    <meta itemprop="wordCount" content="377">
    <title>MinIO object storage :: gokrazy</title>
    <link href="/images/favicon.png?1763621646" rel="icon" type="image/png">
    <link href="/css/auto-complete/auto-complete.min.css?1763621646" rel="stylesheet">
    <script src="/js/auto-complete/auto-complete.min.js?1763621646" defer></script>
    <script src="/js/search-lunr.min.js?1763621646" defer></script>
    <script src="/js/search.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.index_js_url="/searchindex.en.js?1763621646";
    </script>
    <script src="/js/lunr/lunr.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.stemmer.support.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.multi.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.en.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.contentLangs=['en'];
    </script>
    <link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet"></noscript>
    <link href="/css/perfect-scrollbar/perfect-scrollbar.min.css?1763621646" rel="stylesheet">
    <link href="/css/theme.min.css?1763621646" rel="stylesheet">
    <link href="/css/format-html.min.css?1763621646" rel="stylesheet" id="R-format-style">
    <script>
      window.relearn = window.relearn || {};
      // configuration
      window.relearn.min = `.min`;
      window.relearn.path='\/packages\/minio\/index.html';
      window.relearn.relBasePath='..\/..';
      window.relearn.relBaseUri='..\/..';
      window.relearn.absBaseUri='https:\/\/gokrazy.org';
      window.relearn.disableInlineCopyToClipboard=true;
      window.relearn.enableBlockCodeWrap=true;
      // legal
      window.relearn.getItem = (s,n) => {return s.getItem(n)};
      window.relearn.setItem = (s,n,v) => {return s.setItem(n,v)};
      window.relearn.removeItem = (s,n) => {return s.removeItem(n)};
      // translations
      window.T_Copy_to_clipboard = `Copy text to clipboard`;
      window.T_Copied_to_clipboard = `Text copied to clipboard!`;
      window.T_Link_copied_to_clipboard = `Link copied to clipboard!`;
      window.T_Reset_view = `Reset view`;
      window.T_View_reset = `View reset!`;
      window.T_No_results_found = `No results found for "{0}"`;
      window.T_N_results_found = `{1} results found for "{0}"`;
      window.T_Browser_unsupported_feature = `This browser doesn't support this feature`;
      // variant stuff
      window.relearn.themevariants = [ 'auto' ];
      window.relearn.customvariantname = "my-custom-variant";
      window.relearn.changeVariant = function(variant) {
        var oldVariant = document.documentElement.dataset.rThemeVariant;
        window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        document.documentElement.dataset.rThemeVariant = variant;
        if (oldVariant != variant) {
          document.dispatchEvent( new CustomEvent('themeVariantLoaded', { detail: { variant, oldVariant } }) );
          window.relearn.markVariant();
        }
      }
      window.relearn.markVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant");
        document.querySelectorAll(".R-variantswitcher select").forEach((select) => {select.value = variant;});
      }
      window.relearn.initVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant") ?? "";
        if( variant == window.relearn.customvariantname ){
        }else if( !variant || !window.relearn.themevariants.includes(variant) ){
          variant = window.relearn.themevariants[0];
          window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        }
        document.documentElement.dataset.rThemeVariant = variant;
      }
      window.relearn.initVariant();
      window.relearn.markVariant();
    </script>
  </head>
  <body class="mobile-support html" data-url="/packages/minio/index.html">
    <div id="R-body" class="default-animation">
      <div id="R-body-overlay"></div>
      <nav id="R-topbar">
        <div class="topbar-wrapper">
          <div class="topbar-sidebar-divider"></div>
          <div class="topbar-area topbar-area-start" data-area="start">
            <div class="topbar-button topbar-button-sidebar" data-content-empty="disable" data-width-s="show" data-width-m="hide" data-width-l="hide">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleNav()" type="button" title="Menu (CTRL&#43;ALT&#43;n)"><i class="fa-fw fas fa-bars"></i></button></span>
            </div>
            <div class="topbar-button topbar-button-toc" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="Table of Contents (CTRL&#43;ALT&#43;t)"><i class="fa-fw fas fa-list-alt"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
<nav class="TableOfContents">
  <ul>
    <li><a href="#step-1-install-minio-to-your-gokrazy-device">Step 1: Install MinIO to your gokrazy device</a></li>
    <li><a href="#step-2-configuring-the-environment-variables-and-command-line-flags">Step 2: Configuring the environment variables and command-line flags</a></li>
    <li><a href="#step-3-test-whether-the-setup-was-successful">Step 3: Test whether the setup was successful</a></li>
  </ul>
</nav>
                </div>
              </div>
            </div>
          </div>
          <ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList"><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/index.html"><span itemprop="name">gokrazy Go appliances</span></a><meta itemprop="position" content="1">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/packages/index.html"><span itemprop="name">Available packages</span></a><meta itemprop="position" content="2">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><span itemprop="name">MinIO object storage</span><meta itemprop="position" content="3"></li>
          </ol>
          <div class="topbar-area topbar-area-end" data-area="end">
            <div class="topbar-button topbar-button-edit" data-content-empty="disable" data-width-s="area-more" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><a href="https://github.com/gokrazy/gokrazy/tree/master/website/content/packages/minio.md" rel="external" title="Edit (CTRL+ALT+w)"><i class="fa-fw fas fa-pen"></i></a></span>
            </div>
            <div class="topbar-button topbar-button-more" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="More"><i class="fa-fw fas fa-ellipsis-v"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
                  <div class="topbar-area topbar-area-more" data-area="more">
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </nav>
      <div id="R-main-overlay"></div>
      <main id="R-body-inner" class="highlightable packages" tabindex="-1">
        <div class="flex-block-wrapper">
<article class="default">
  <header class="headline">
  </header>

<h1 id="minio-object-storage">MinIO object storage</h1>

<p><a href="https://min.io/" rel="external">MinIO</a> is high-performance object storage that is API
compatible to Amazons <a href="https://aws.amazon.com/de/s3/" rel="external">Simple Storage Service (S3)</a>,
but is open source and written in Go. It can be used as a building block for
applications involving file storage and file transmission and while its native
to the cloud, it turns out one can also use it on gokrazy. :)</p>
<h2 id="step-1-install-minio-to-your-gokrazy-device">Step 1: Install MinIO to your gokrazy device<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Add the <code>minio</code> program to your gokrazy instance:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gok add github.com/minio/minio
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Automatically initialize a file system on the /perm partition on first boot:</span>
</span></span><span style="display:flex;"><span>gok add github.com/gokrazy/mkfs</span></span></code></pre></div>
<h2 id="step-2-configuring-the-environment-variables-and-command-line-flags">Step 2: Configuring the environment variables and command-line flags<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>Then, open your instance’s <code>config.json</code> in your editor:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gok edit</span></span></code></pre></div>
<p>And configure <a href="/userguide/package-config/index.html#flags">Package config: Command-line
flags</a> and <a href="/userguide/package-config/index.html#env">Package config: Environment
variables</a>:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;Hostname&#34;</span>: <span style="color:#e6db74">&#34;storage&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;Packages&#34;</span>: [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/gokrazy/fbstatus&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/gokrazy/hello&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/gokrazy/serial-busybox&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/gokrazy/breakglass&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/minio/minio&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;github.com/gokrazy/mkfs&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex; background-color:#3c3d38"><span>    <span style="color:#f92672">&#34;PackageConfig&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span>        <span style="color:#f92672">&#34;github.com/minio/minio&#34;</span>: {
</span></span><span style="display:flex; background-color:#3c3d38"><span>            <span style="color:#f92672">&#34;CommandLineFlags&#34;</span>: [
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;server&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;--address&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;:3001&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;--console-address&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;:3002&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;/perm/minio/&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span>            ],
</span></span><span style="display:flex; background-color:#3c3d38"><span>            <span style="color:#f92672">&#34;Environment&#34;</span>: [
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;MINIO_ROOT_USER=minio&#34;</span>,
</span></span><span style="display:flex; background-color:#3c3d38"><span>                <span style="color:#e6db74">&#34;MINIO_ROOT_PASSWORD=minio-on-gokrazy&#34;</span>
</span></span><span style="display:flex; background-color:#3c3d38"><span>            ]
</span></span><span style="display:flex; background-color:#3c3d38"><span>        }
</span></span><span style="display:flex; background-color:#3c3d38"><span>    }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>

<p>Then, deploy as usual:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gok update</span></span></code></pre></div>
<p>A few things can be noted here:</p>
<ul>
<li>
<p>There are nice practical examples on the different options once you execute
<code>minio server --help</code> if you have it installed locally or more advanced use
cases in the official
<a href="https://docs.min.io/minio/baremetal/reference/minio-server/minio-server.html" rel="external">MinIO docs</a>.</p>
</li>
<li>
<p>The ports for the storage server and console do not have to be explicitly set,
but for me the default port collided with another service (Port 9000). If no
port is set the console just chooses an arbitrary free one.</p>
</li>
<li>
<p>For some reason the <code>HOME</code> variable has to be set to the storage folder.
See <a href="https://github.com/minio/minio/issues/12641" rel="external">Issue #12641</a> on why that
is the case. As default gokrazy sets <code>HOME</code> to <code>HOME=/perm/&lt;cmd&gt;</code>, so if you
want to change your storage location to something different modify the
<code>Environment</code> field accordingly.</p>
</li>
</ul>
<h2 id="step-3-test-whether-the-setup-was-successful">Step 3: Test whether the setup was successful<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>If you have the <a href="https://github.com/minio/mc" rel="external"><code>mc</code></a> command installed you can
check out whether your installation of MinIO really works:</p>
<div class="highlight actionbar-wrapper wrap-code" dir="auto"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mc alias set gokrazy http://gokrazy:3001 minio minio-on-gokrazy
</span></span><span style="display:flex;"><span>Added <span style="color:#e6db74">`</span>gokrazy<span style="color:#e6db74">`</span> successfully.
</span></span><span style="display:flex;"><span>$ mc ls gokrazy
</span></span><span style="display:flex;"><span>$ mc mb gokrazy/testbucket
</span></span><span style="display:flex;"><span>Bucket created successfully <span style="color:#e6db74">`</span>gokrazy/testbucket<span style="color:#e6db74">`</span>.
</span></span><span style="display:flex;"><span>$ mc ls gokrazy
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>2021-09-15 16:40:16 CEST<span style="color:#f92672">]</span>     0B testbucket/</span></span></code></pre></div>
<p>Also check out the output in the logs on the gokrazy webinterface and login into
the MinIO management console (<a href="http://gokrazy:3002" rel="external">http://gokrazy:3002</a> in this
guide) to create service accounts view logs, bucket contents and more.</p>

  <footer class="footline">
  </footer>
</article>
        </div>
      </main>
    </div>
    <aside id="R-sidebar" class="default-animation">
      <div id="R-header-topbar" class="default-animation"></div>
      <div id="R-header-wrapper" class="default-animation">
        <div id="R-header" class="default-animation">
<img src="/logo.svg" width="100%" alt="gokrazy logo" title="gokrazy logo">

        </div>
        <search><form action="/search/index.html" method="get">
          <div class="searchbox default-animation">
            <button class="search-detail" type="submit" title="Search (CTRL+ALT+f)"><i class="fas fa-search"></i></button>
            <label class="a11y-only" for="R-search-by">Search</label>
            <input data-search-input id="R-search-by" name="search-by" class="search-by" type="search" placeholder="Search...">
            <button class="search-clear" type="button" data-search-clear="" title="Clear search"><i class="fas fa-times" title="Clear search"></i></button>
          </div>
        </form></search>
      </div>
      <div id="R-homelinks" class="default-animation homelinks">
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-homelinks">
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="/index.html"><a class="padding" href="/index.html"><i class="fa-fw fas fa-home"></i> Home</a></li>
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-headercontrols">
          <ul class="">
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
      </div>
      <div id="R-content-wrapper" class="highlightable">
        <div class="R-sidebarmenu R-shortcutmenu-main">
          <ul class="enlarge morespace collapsible-menu">
            <li class="" data-nav-url="/quickstart/index.html"><a class="padding" href="/quickstart/index.html"><b>1. </b>Quickstart</a></li>
            <li class="" data-nav-url="/platforms/index.html"><a class="padding" href="/platforms/index.html"><b>2. </b>Supported platforms</a></li>
            <li class="" data-nav-url="/userguide/index.html"><a class="padding" href="/userguide/index.html"><b>3. </b>Configuration</a><ul id="R-subsections-74b4df3a3d9365853f09e9f1dfe7bbba" class="collapsible-menu"></ul></li>
            <li class="parent " data-nav-url="/packages/index.html"><a class="padding" href="/packages/index.html"><b>4. </b>Available packages</a><ul id="R-subsections-bdf1e8ce92aa8ff6883c617f10480430" class="collapsible-menu">
            <li class="" data-nav-url="/packages/showcase/index.html"><a class="padding" href="/packages/showcase/index.html">Showcase</a></li>
            <li class="" data-nav-url="/packages/tailscale/index.html"><a class="padding" href="/packages/tailscale/index.html">Tailscale VPN</a></li>
            <li class="" data-nav-url="/packages/caddy-http-server/index.html"><a class="padding" href="/packages/caddy-http-server/index.html">Caddy HTTP server</a></li>
            <li class="active " data-nav-url="/packages/minio/index.html"><a class="padding" href="/packages/minio/index.html">MinIO object storage</a></li>
            <li class="" data-nav-url="/packages/docker-containers/index.html"><a class="padding" href="/packages/docker-containers/index.html">Docker containers</a></li>
            <li class="" data-nav-url="/packages/prometheus/index.html"><a class="padding" href="/packages/prometheus/index.html">Prometheus</a></li></ul></li>
            <li class="" data-nav-url="/development/index.html"><a class="padding" href="/development/index.html"><b>5. </b>Package development</a><ul id="R-subsections-54b0ce3c97b111c8cd4d107325fd580c" class="collapsible-menu"></ul></li>
          </ul>
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-shortcuts">
          <div class="nav-title padding">More</div>
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="https://github.com/gokrazy/gokrazy"><a class="padding" href="https://github.com/gokrazy/gokrazy" rel="external"><i class='fab fa-github'></i> GitHub repo</a></li>
          </ul>
        </div>
        <div id="R-footer-margin"></div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-footercontrols">
          <ul class="">
          </ul>
        </div>
<div id="R-footer"><p>Built with <a href="https://github.com/McShelby/hugo-theme-relearn" title="love"><i class="fas fa-heart"></i></a> by <a href="https://gohugo.io/">Hugo</a></p></div>
      </div>
    </aside>
    <script src="/js/perfect-scrollbar/perfect-scrollbar.min.js?1763621646" defer></script>
    <script src="/js/theme.min.js?1763621646" defer></script>
    <div id="toast-container" role="status" aria-live="polite" aria-atomic="false"></div>
  </body>
</html>
